package StreamStudy;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class t3 {
    public static void main(String[] args) {
//        要求完成如下的操作:  现在有两个 ArrayList 集合，分别存储6名男演员和6名女演员，
        ArrayList<String> manList = new ArrayList<>();
        manList.add("周润发");
        manList.add("成龙");
        manList.add("刘德华");
        manList.add("吴京");
        manList.add("周星驰");
        manList.add("李连杰");

        ArrayList<String> womanList = new ArrayList<>();
        womanList.add("林心如");
        womanList.add("林青霞");
        womanList.add("柳岩");
        womanList.add("林志玲");
        womanList.add("李彤");
//        1.男演员只要名字为3个字的前两人
        Stream<String> res1 = manList.stream().filter(item -> item.length() == 3).limit(2);
//        System.out.println("男演员只要名字为3个字的前两人:");
//        res1.forEach(item-> System.out.println(item));
//        2.女演员只要姓林的，并且不要第一个
        Stream<String> res2 =  womanList.stream().filter(item->item.startsWith("林")).skip(1);
//        System.out.println("女演员只要姓林的，并且不要第一个:");
//        res2.forEach(item-> System.out.println(item));
//        3.把过滤后的男演员姓名和女演员姓名合并到一起
       Stream<String> res3 =   Stream.concat(res1,res2);
//        System.out.println("把过滤后的男演员姓名和女演员姓名合并到一起:");
//        res3.forEach(item-> System.out.println(item));
//        4.把上一步操作后的元素作为构造方法的参数创建学生对象,遍历数据-学生类Actor，里面有一个成员变量，一个带参构造方法，以及成员变量对应的get/set方法
        System.out.println("把上一步操作后的元素作为构造方法的参数创建演员对象,遍历数据:");
        ArrayList<Student> StudentArr = new ArrayList<>();
         res3.forEach(new Consumer<String>() {
             @Override
             public void accept(String s) {
                 StudentArr.add(new Student(s));
             }
         });
        StudentArr.forEach(st-> System.out.println(st.getName()));
    }
}
